perm filename HASH06.FAI[SYS,HE] blob
sn#004148 filedate 1972-09-13 generic text, type T, neo UTF8
00100 ENTRY HASH,REHASH
00200 FF←0
00300 A←1
00400 B←2
00500 C←3
00600 D←4
00700 X←5
00800 Y←6
00900 Z←7
01000 Q←10
01100 AA←11
01200 SP←16
01300 P←17
01400
01500 TITLE HASH06
01600
01700 BITS←6
01800 IFE BITS-6,{PRIME←3⎇
01900 IFE BITS-7,{PRIME←5⎇
02000 IFE BITS-10,{PRIME←13⎇
02100 IFE BITS-11,{PRIME←23⎇
02200 IFE BITS-12,{PRIME←45⎇
02300 CMASK←7777⊗(BITS-12)
02400 BMASK←CMASK⊗-2
02500 HASH: POP SP,D ;POINTER
02600 POP SP,C ;COUNT
02700 ANDI C,-1
02800 SETZB A,R
02900 AOS R
03000 ILDB A,D
03100 IMULI A,PRIME
03200 SOJLE C,L2
03300 L1: ILDB B,D
03400 ADDI A,(B)
03500 SOJG C,L1
03600 IMULI A,PRIME
03700 L2: ANDI A,BMASK
03800 MOVEM A,H
03900 POPJ P,
04000 REHASH:MOVE A,R
04100 IMULI A,5
04200 ANDI A,CMASK
04300 MOVEM A,R
04400 LSH A,-2
04500 JUMPE A,E1
04600 ADD A,H
04700 ANDI A,BMASK
04800 POPJ P,
04900 E1: MOVEI A,[ASCIZ/SYMBOL TABLE FULL/]
05000 CALLI A,3
05100 CALLI A,12
05200 R: Z
05300 H: Z
05400 END